<?php
include_once($URL_OBJETO.'conexion.php');
include_once($URL_OBJETO.'oReplica.php');

class aReplica  {
	
	public function getReplicas($cuantos = "", $offset = "") {
		$lista = $this->getListaReplicasxCriterio("", $cuantos, $offset);
		return $lista;
	}
	
	public function getCountReplicas() {
		$lista = $this->getCountPorCriterio("");
		if(count($lista) > 0) 
			return $lista[0];
		else
			return 0;
	}
	
	public function getReplicaxCodigo($cod) {
		$lista = $this->getListaReplicasxCriterio("cod_replica = $cod");
		if(count($lista) > 0) 
			return $lista[0];
		else
			return false;
	}
	
	public function getListaReplicasxCriterio($criterio, $cuantos = "", $offset = "") {
		$connect = new PG();
		if(!$connect->Conectar()) {
			exit($connect->VerError());
		}
		else {
			$sql = "SELECT 
					  r.cod_replica,
					  r.tipo_original,
					  r.cod_original,
					  r.cod_replica_text,
					  r.descripcion,
					  r.fabricado_por,
					  r.estado,
					  r.useradd,
					  r.usermod,
					  r.fecadd,
					  r.fecmod,
					  r.ipmod,
					  r.ingreso_gabinete,
					  case r.tipo_original
					    when '1' then u.codue_text
					    when '2' then m.cod_muestra_text
					  end as cod_original_text
					FROM 
					  public.replica r 
					  left join public.uestratigrafica u on r.cod_original = u.codue and r.tipo_original = '1' 
					  left join public.muestra m on r.cod_original = m.cod_muestra and r.tipo_original = '2'";
			
			if(!empty($criterio)) {
				$sql .= " WHERE ".$criterio;				
			}
			
			if(!empty($cuantos)) {
				$sql .= " LIMIT ".($cuantos + 0)." OFFSET ".($offset + 0);
			}
	
			$lista = array();
			
			$sql = $connect->pgt_query($sql);
			while($row = pg_fetch_array($sql)){
				$o = new oReplica();
				$o->setCodReplica($row['cod_replica']);
				$o->setTipoOriginal($row['tipo_original']);
				$o->setCodOriginal($row['cod_original']);
				$o->setCodReplicaText($row['cod_replica_text']);
				$o->setDescripcion($row['descripcion']);
				$o->setFabricadoPor($row['fabricado_por']);
				$o->setEstado($row['estado']);
				$o->setUseradd($row['useradd']);
				$o->setUsermod($row['usermod']);
				$o->setFecadd($row['fecadd']);
				$o->setFecmod($row['fecmod']);
				$o->setIpmod($row['ipmod']);
				$o->setIngresoGabinete($row['ingreso_gabinete']);
				$o->setCodOriginalText($row['cod_original_text']);
				array_push($lista, $o);
			}
			$connect->LimpiarConsulta();
			$connect->CerrarConexion();
			return $lista;
		}
	}
	
	public function getReplicasIngreso() {
		$connect = new PG();
		if(!$connect->Conectar()) {
			exit($connect->VerError());
		}
		else {
			$sql = "SELECT
					  r.cod_replica,
					  r.tipo_original,
					  r.cod_original,
					  r.cod_replica_text,
					  r.descripcion,
					  r.fabricado_por,
					  r.estado,
					  r.useradd,
					  r.usermod,
					  r.fecadd,
					  r.fecmod,
					  r.ipmod,
					  r.ingreso_gabinete,
					  case r.tipo_original
					    when '1' then u.codue_text
					    when '2' then m.cod_muestra_text
					  end as cod_original_text
					FROM
					  public.replica r
					  left join public.uestratigrafica u on r.cod_original = u.codue and r.tipo_original = '1' 
					  left join public.muestra m on r.cod_original = m.cod_muestra and r.tipo_original = '2' 
					  left join public.gabinete g on r.cod_replica = g.cod_item and g.tipo_item = '3' 
					WHERE (g.en_gabinete is null or g.en_gabinete <> '1') ";
				
			$lista = array();
				
			$sql = $connect->pgt_query($sql);
			while($row = pg_fetch_array($sql)){
				$o = new oReplica();
				$o->setCodReplica($row['cod_replica']);
				$o->setTipoOriginal($row['tipo_original']);
				$o->setCodOriginal($row['cod_original']);
				$o->setCodReplicaText($row['cod_replica_text']);
				$o->setDescripcion($row['descripcion']);
				$o->setFabricadoPor($row['fabricado_por']);
				$o->setEstado($row['estado']);
				$o->setUseradd($row['useradd']);
				$o->setUsermod($row['usermod']);
				$o->setFecadd($row['fecadd']);
				$o->setFecmod($row['fecmod']);
				$o->setIpmod($row['ipmod']);
				$o->setIngresoGabinete($row['ingreso_gabinete']);
				$o->setCodOriginalText($row['cod_original_text']);
				array_push($lista, $o);
			}
			$connect->LimpiarConsulta();
			$connect->CerrarConexion();
			return $lista;
		}
	}
	
	public function getReplicasSalida($codGabinete) {
		$connect = new PG();
		if(!$connect->Conectar()) {
			exit($connect->VerError());
		}
		else {
			$sql = "SELECT
					  r.cod_replica,
					  r.tipo_original,
					  r.cod_original,
					  r.cod_replica_text,
					  r.descripcion,
					  r.fabricado_por,
					  r.estado,
					  r.useradd,
					  r.usermod,
					  r.fecadd,
					  r.fecmod,
					  r.ipmod,
					  r.ingreso_gabinete,
					  case r.tipo_original
					    when '1' then u.codue_text
					    when '2' then m.cod_muestra_text
					  end as cod_original_text
					FROM
					  public.replica r
					  left join public.uestratigrafica u on r.cod_original = u.codue and r.tipo_original = '1'
					  left join public.muestra m on r.cod_original = m.cod_muestra and r.tipo_original = '2'
					  inner join public.gabinete g on r.cod_replica = g.cod_item and g.tipo_item = '3'
					WHERE (g.en_gabinete = '1') and g.cod_gabinete = $codGabinete ";
	
			$lista = array();
	
			$sql = $connect->pgt_query($sql);
			while($row = pg_fetch_array($sql)){
				$o = new oReplica();
				$o->setCodReplica($row['cod_replica']);
				$o->setTipoOriginal($row['tipo_original']);
				$o->setCodOriginal($row['cod_original']);
				$o->setCodReplicaText($row['cod_replica_text']);
				$o->setDescripcion($row['descripcion']);
				$o->setFabricadoPor($row['fabricado_por']);
				$o->setEstado($row['estado']);
				$o->setUseradd($row['useradd']);
				$o->setUsermod($row['usermod']);
				$o->setFecadd($row['fecadd']);
				$o->setFecmod($row['fecmod']);
				$o->setIpmod($row['ipmod']);
				$o->setIngresoGabinete($row['ingreso_gabinete']);
				$o->setCodOriginalText($row['cod_original_text']);
				array_push($lista, $o);
			}
			$connect->LimpiarConsulta();
			$connect->CerrarConexion();
			return $lista;
		}
	}	
	
	public function getCountPorCriterio($criterio = "") {
		$connect = new PG();
		if(!$connect->Conectar()) {
			exit($connect->VerError());
		}
		else {
			$sql = "SELECT count(*) FROM replica r  ";
	
			if(!empty($criterio)) {
				$sql .= " WHERE ".$criterio;
			}
			
			$lista = array();
				
			$sql = $connect->pgt_query($sql);
			$row = pg_fetch_array($sql);
			$contador = $row[0];
	
			$connect->LimpiarConsulta();
			$connect->CerrarConexion();
	
			return $contador;
		}
	}
	
}